﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace SWCInvoice.Servicelayer {
    /// <summary>
    /// Helper Methods
    /// </summary>
    public class Utilities {
        
        /// <summary>
        /// Get a new Gui
        /// </summary>
        /// <returns>Retruns a new String Guid</returns>
        public static string NewGuid() {
            return Guid.NewGuid().ToString();
        }

        /// <summary>
        /// Convert a datestring to a datetime object
        /// Symbol	Typ 	                         Aufruf	                        Ergebnis
        /// dd  	Tag	                            string.Format("{0:dd}",Wert)	05
        /// ddd     Tagname (Kürzel)                string.Format("{0:ddd}",Wert)	Mo
        /// dddd	Tagname (ausgeschrieben)    	string.Format("{0:dddd}",Wert)	Montag
        /// gg	    Ära	                            string.Format("{0:gg}",Wert)	n. Chr.
        /// hh	    Stunde 2stellig	                string.Format("{0:hh}",Wert)	02
        /// HH	    Stunde 2stellig (24-Stunden)	string.Format("{0:HH}",Wert)	14
        /// mm	    Minute	                        string.Format("{0:mm}",Wert)	04
        /// MM	    Monat	                        string.Format("{0:MM}",Wert)	03
        /// MMM	    Monatsname (Kürzel)	            string.Format("{0:MMM}",Wert)	Mrz
        /// MMMM	Monatsname (ausgeschrieben)	    string.Format("{0:MMMM}",Wert)	März
        /// ss	    Sekunde	                        string.Format("{0:ss}",Wert)	21
        /// tt	    AM oder PM (nur englisch)	    string.Format("{0:tt}",Wert)	
        /// yy	    Jahr 2stellig	                string.Format("{0:yy}",Wert)	12
        /// yyyy	Jahr 4stellig	                string.Format("{0:yyyy}",Wert)	2012
        /// zz	    Zeitzone (kurz)	                string.Format("{0:zz}",Wert)	+01
        /// zzz	    Zeitzone (lang)	                string.Format("{0:zzz}",Wert)	+01:00
        /// </summary>
        /// <param name="date">The date(time) string</param>
        /// <param name="pattern">A datetime pattern</param>
        /// <returns>DateTime Object</returns>
        public static DateTime ConvertDate(string date, string pattern) {
            DateTime retval = DateTime.MinValue;
            if (System.DateTime.TryParseExact(date, pattern, System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out retval))
                return retval;

            // Could not convert date..
            return DateTime.MinValue;
        }
    }
}
